import { requestClient } from '#/api/request';

/**
 * 分页查询认证订单列表
 * @param {object} params 查询参数，包含分页信息和筛选条件
 * @param {number} params.pageNum 当前页码
 * @param {number} params.pageSize 每页数量
 * @param {string} [params.orderNo] 订单编号
 * @param {string} [params.certificateId] 认证ID
 * @param {string} [params.userName] 用户姓名
 * @param {string} [params.phone] 联系方式
 * @param {string} [params.status] 订单状态
 * @param {string} [params.startTime] 支付开始时间
 * @param {string} [params.endTime] 支付结束时间
 * @returns {Promise<any>} 认证订单分页数据
 */
export async function getOrderListApi(params: {
  pageNum: number;
  pageSize: number;
  orderNo?: string;
  certificateId?: string;
  userName?: string;
  phone?: string;
  status?: string;
  startTime?: string;
  endTime?: string;
}) {
  return requestClient.get('/certification/get-cert-order-page', {
    params,
  });
}

/**
 * 获取订单状态
 * @returns {Promise<any>} 订单状态详情
 */
export async function getOrderStatusDetailApi() {
  return requestClient.get('/certification/get-cert-order-status-detail');
}


/**
 * 认证申请退款
 * @param {object} params 请求参数
 * @param {string} params.orderId 认证订单主键id（必填）
 * @param {string} [params.refundReason] 退款原因（可选）
 * @param {string} [params.refundAmt] 退款金额，不传则退订单全部金额，单位元，最多允许两位小数（可选）
 * @returns {Promise<any>} 退款申请结果
 */
export async function certOrderRefundApi(params: {
  orderId: string;
  refundReason?: string;
  refundAmt?: string;
}) {
  return requestClient.post('/certification/cert-order-refund', params);
}

/**
 * 获取认证订单详情
 * @param {object} params 请求参数
 * @param {string} params.orderId 用户认证订单id（必填）
 * @returns {Promise<any>} 认证订单详情
 */
export async function getCertOrderDetailApi(params: { orderId: string }) {
  return requestClient.get('/certification/get-cert-order/detail', {
    params,
  });
}

/**
 * 导出认证订单Excel
 * @param {string[]} certOrderIds 认证订单ID数组
 * @returns {Promise<Blob>} Excel文件的二进制数据
 */
export async function exportCertOrderExcelApi(certOrderIds: string[]) {
  return requestClient.post('/certification/cert-order/excel', { certOrderIds }, {
    responseType: 'blob'
  });
}
